m, n = list(map(int, input().split()))
arr = list()
ans=0
for i in range(m):
arr.append(list(input()))
visited = set()
for i in range(m):
for j in range(n):
if arr[i][j]=='W':
for x,y in [(i+1,j), (i-1,j), (i,j+1), (i, j-1)]:
if x>-1 and y>-1 and x<m and y<n:
if arr[x][y] == 'P' and (x,y) not in visited:
visited.add((x,y))
ans +=1
break
print(ans)
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int n,m;
cin>>n>>m;
vector<vector<char>>d(n,vector<char>(m));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>d[i][j];
}
}
int cnt=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(d[i][j]!='W')continue;
if(i-1>=0){
if(d[i-1][j]=='P'){
cnt++;
d[i-1][j]='.';
continue;
}
}
if(j-1>=0){
if(d[i][j-1]=='P'){
cnt++;
d[i][j-1]='.';
continue;
}
}
if(j+1<m){
if(d[i][j+1]=='P'){
cnt++;
d[i][j+1]='.';
continue;
}
}
if(i+1<n){
if(d[i+1][j]=='P'){
cnt++;
d[i+1][j]='.';
continue;
}
}
}
}
cout<<cnt;
}
510A - Fox And Snake | 1520B - Ordinary Numbers |
1624A - Plus One on the Subset | 350A - TL |
1487A - Arena | 1520D - Same Differences |
376A - Lever | 1305A - Kuroni and the Gifts |
1609A - Divide and Multiply | 149B - Martian Clock |
205A - Little Elephant and Rozdil | 1609B - William the Vigilant |
978B - File Name | 1426B - Symmetric Matrix |
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |